#ifndef PROTOCOL_H
#define PROTOCOL_H


#include<QString>
typedef  unsigned int uint;
enum ENUM_MSG_TYPE{
    ENUM_MSG_TYPE_MIN=0,
    //注册
    ENUM_MSG_TYPE_REGIST_REQUEST,//需求
    ENUM_MSG_TYPE_REGIST_RESPOND,//应答
    //查找用户
    ENUM_MSG_TYPE_SEARCH_USER_REQUIST,
    ENUM_MSG_TYPE_SEARCH_USER_RESPOND,
    //在线用户
    ENUM_MSG_TYPE_ONLINE_USER_REQUIST,
    ENUM_MSG_TYPE_ONLINE_USER_RESPOND,
    //添加好友
    ENUM_MSG_TYPE_ADD_FRIEND_REQUIST,
    ENUM_MSG_TYPE_ADD_FRIEND_RESPOND,
    //同意添加好友
    ENUM_MSG_TYPE_ADD_FRIEND_AGREE_REQUIST,
    ENUM_MSG_TYPE_ADD_FRIEND_AGREE_RESPOND,
    //拒绝添加好友
    ENUM_MSG_TYPE_ADD_FRIEND_REFUSE_REQUIST,
    ENUM_MSG_TYPE_ADD_FRIEND_REFUSE_RESPOND,
    //刷新好友
    ENUM_MSG_TYPE_FLUSH_FRIEND_REQUIST,
    ENUM_MSG_TYPE_FLUSH_FRIEND_RESPOND,
    //删除好友
    ENUM_MSG_TYPE_DEL_FRIEND_REQUIST,
    ENUM_MSG_TYPE_DEL_FRIEND_RESPOND,
    //聊天
    ENUM_MSG_TYPE_CHAT_REQUIST,
    ENUM_MSG_TYPE_CHAT_RESPOND,
    //刷新文件
    ENUM_MSG_TYPE_FLUSH_FILE_REQUIST,
    ENUM_MSG_TYPE_FLUSH_FILE_RESPOND,
    //新建文件夹
    ENUM_MSG_TYPE_MKDIR_REQUIST,
    ENUM_MSG_TYPE_MKDIR_RESPOND,
    //删除文件夹
    ENUM_MSG_TYPE_DELDIR_REQUIST,
    ENUM_MSG_TYPE_DELDIR_RESPOND,
    //删除文件
    ENUM_MSG_TYPE_DELFILE_REQUIST,
    ENUM_MSG_TYPE_DELFILE_RESPOND,
    //文件重命名
    ENUM_MSG_TYPE_RENAME_FILE_REQUIST,
    ENUM_MSG_TYPE_RENAME_FILE_RESPOND,
    //移动文件
    ENUM_MSG_TYPE_MOVE_FILE_REQUIST,
    ENUM_MSG_TYPE_MOVE_FILE_RESPOND,
    //上传文件
    ENUM_MSG_TYPE_UP_FILE_REQUIST,
    ENUM_MSG_TYPE_UP_FILE_RESPOND,
    //上传文件数据
    ENUM_MSG_TYPE_UP_FILE_DATA_REQUIST,
    ENUM_MSG_TYPE_UP_FILE_DATA_RESPOND,
    //分享文件
    ENUM_MSG_TYPE_SHARE_FILE_REQUIST,
    ENUM_MSG_TYPE_SHARE_FILE_RESPOND,
    //分享文件同意
    ENUM_MSG_TYPE_SHARE_FILE_AGREE_REQUIST,
    ENUM_MSG_TYPE_SHARE_FILE_AGREE_ESPOND,
    //登录
    ENUM_MSG_TYPE_LOGIN_REQUIST,
    ENUM_MSG_TYPE_LOGIN_RESPOND,
    ENUM_MSG_TYPE_MAX=0x00ffff,

};

struct PDU{

    uint uiPDULen; //总的协议长度
    uint uiMsgType;//消息类型
    uint uiMsgLen;//消息长度
    char caData[64];//参数
    char caMsg[];//实际消息

};

struct FileInfo{//记录文件信息
    char caName[32];//文件名
    int iFileType;//文件类型(目录还是文件夹)
};

PDU* makePDU(uint uiMsgLen);
#endif // PROTOCOL_H
